// -----------------------------
// Author: 		Dhaenens Gert 
// Creation: 	1/6/2015 10:28:28 AM				
// -----------------------------

#ifndef _LowPass_h
#define _LowPass_h

#include "SoundPass.h"

class Oscillator;

class LowPass : public SoundPass
{
public:
	Float	CutoffFrequency;
	Float	QualityFactor;
	Float	Gain;

	Bool			Modulate;
	SoundWaveType	ModulateType;
	Float			ModulateFrequency;
	Float			ModulateAmplitude;
	Int32			ModulateStrength;

	LowPass();
	virtual ~LowPass();

	virtual SoundSample		Apply(const SoundSample& input) const;

private:

	virtual Float			ModulateFreq(Oscillator* lpOsc, Float t) const;

	LowPass(const LowPass& refLowPass);
	LowPass& operator=(const LowPass& refLowPass);
};

#endif